Файл: TextTransformer.txt

Дата: 10.04.2014

1: * Преобразование (трансформация) текстов.
2: * Программа КОНЦЕПТ, 16.04.2012-18.04.2012, www.gendoc.ru
3: * 20.04.2012 - Разбить на строки, Разбить на слова, Строки с большой буквы
4:
5: ИНИЦИАЛИЗАЦИЯ
6: ВЫПОЛНЕНИЕ
7:
8: ****** ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ******
9:
10: функция ВЫВОД строка
11:   список сцепить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК $ (строка коды $результат [строка] '? )
12:   >[строка]
13: возврат
14:
15: функция ЗаменитьСпецсимволы строка
16:   память локальный рез длина_строки позиция символ
17:
18:   присвоить рез '' позиция 1
19:   строка размер длина_строки [строка]
20:   пока [позиция] <= [длина_строки]  
21:     строка взять символ [строка] [позиция]  
22:     список отобразить символ [символ] [СПЕЦ_ВХОД] [СПЕЦ_ВЫХОД] [символ]
23:     строка сцепить рез $ [символ]
24:     увеличить позиция
25:   цикл
26:   строка символы рез $
27:
28:   присвоить $результат [рез]
29: возврат
30:
31: ****** ПРИКЛАДНЫЕ ФУНКЦИИ ******
32:
33: функция 'К верхнему регистру'
34:   для [ИСХОДНЫЙ_СПИСОК]
35:     строка символы СТРОКА [$ОбъектЦикла]
36:     строка прописные СТРОКА $
37:     ВЫВОД [СТРОКА]
38:   следующий
39: возврат
40:
41: функция 'К нижнему регистру'
42:   для [ИСХОДНЫЙ_СПИСОК]
43:     строка символы СТРОКА [$ОбъектЦикла]
44:     строка строчные СТРОКА $
45:     ВЫВОД [СТРОКА]
46:   следующий
47: возврат
48:
49: функция 'Строки с большой буквы'
50:   память локальный первая_буква
51:   для [ИСХОДНЫЙ_СПИСОК]
52:     строка символы СТРОКА [$ОбъектЦикла]
53:     строка взять первая_буква [СТРОКА] 1
54:     строка прописные первая_буква $
55:     строка присвоить СТРОКА $ 1 [первая_буква]
56:     ВЫВОД [СТРОКА]
57:   следующий
58: возврат
59:
60: функция 'Добавить префикс'
61:   ввести переменная ПОДСТРОКА 'Введите префикс:' ';-;*;?'
62:   если [$УспешныйВвод]
63:     для [ИСХОДНЫЙ_СПИСОК]
64:       строка символы СТРОКА [$ОбъектЦикла]
65:       ВЫВОД "[ПОДСТРОКА][СТРОКА]"
66:     следующий
67:   конец
68: возврат
69:
70: функция 'Добавить суффикс'
71:   ввести переменная ПОДСТРОКА 'Введите суффикс:' ';.;<точка с запятой>'
72:   если [$УспешныйВвод]
73:     если [ПОДСТРОКА] == '<точка с запятой>'
74:       присвоить ПОДСТРОКА ';'
75:     конец
76:     для [ИСХОДНЫЙ_СПИСОК]
77:       строка символы СТРОКА [$ОбъектЦикла]
78:       ВЫВОД "[СТРОКА][ПОДСТРОКА]"
79:     следующий
80:   конец    
81: возврат
82:
83: функция 'Обрамить строку'
84:   память локальный префикс суффикс
85:   присвоить префикс '' суффикс ''
86:   ввести переменная ПОДСТРОКА 'Введите символы обрамления:' ';"";<одинарные кавычки>;();[];{};<>;**'
87:   если [$УспешныйВвод]
88:     если [ПОДСТРОКА] == '<одинарные кавычки>'
89:       присвоить ПОДСТРОКА "''"
90:     конец
91:     если (строка размер $результат [ПОДСТРОКА] ) >= 2
92:       строка взять префикс [ПОДСТРОКА] 1    
93:       строка взять суффикс [ПОДСТРОКА] 2    
94:     конец
95:   конец
96:
97:   для [ИСХОДНЫЙ_СПИСОК]
98:     строка символы СТРОКА [$ОбъектЦикла]
99:     ВЫВОД "[префикс][СТРОКА][суффикс]"
100:   следующий
101: возврат
102:
103: функция 'Заключить в тэги HTML/XML'
104:   ввести переменная ПОДСТРОКА 'Введите тэг:' 'p;b;i;u;td;tr'
105:   если [$УспешныйВвод]
106:     если [ПОДСТРОКА] != ''
107:       для [ИСХОДНЫЙ_СПИСОК]
108:         строка символы СТРОКА [$ОбъектЦикла]
109:         ВЫВОД "<[ПОДСТРОКА]>[СТРОКА]</[ПОДСТРОКА]>"
110:       следующий
111:     конец
112:   конец
113: возврат
114:
115: функция 'Вставить пустые строки'
116:   память локальный количество
117:   ввести переменная количество 'Введите количество пустых строк:' '1;2;3;4;5;6;7;8;9;10'
118:   для [ИСХОДНЫЙ_СПИСОК]
119:     строка символы СТРОКА [$ОбъектЦикла]
120:     ВЫВОД [СТРОКА]
121:     для (список сгенерить $результат 1 [количество] )
122:       ВЫВОД ''
123:     следующий
124:   следующий
125: возврат
126:
127: функция 'Сгенерить пустые строки'
128:   память локальный количество
129:   ввести переменная количество 'Введите количество пустых строк:' '1;2;3;4;5;6;7;8;9;10;20;30;40;50'
130:   для [ИСХОДНЫЙ_СПИСОК]
131:     строка символы СТРОКА [$ОбъектЦикла]
132:     ВЫВОД [СТРОКА]
133:   следующий
134:   для (список сгенерить $результат 1 [количество] )
135:     ВЫВОД ''
136:   следующий
137: возврат
138:
139: функция 'Вставить пробелы слева'
140:   память локальный количество префикс
141:   ввести переменная количество 'Введите количество пробелов:' '1;2;3;4;5;6;7;8;9;10'
142:   строка реплицировать префикс ' ' [количество]
143:   для [ИСХОДНЫЙ_СПИСОК]
144:     строка символы СТРОКА [$ОбъектЦикла]
145:     ВЫВОД "[префикс][СТРОКА]"
146:   следующий
147: возврат
148:
149: функция 'Удалить символы'
150:   ввести переменная ПОДСТРОКА 'Введите символы, котрые нужно удалить:' [МНОЖ_ФИЛЬТРОВ]
151:   если [$УспешныйВвод]
152:     для [ИСХОДНЫЙ_СПИСОК]
153:       строка символы СТРОКА [$ОбъектЦикла]
154:       ВЫВОД (строка заменитьСимволы $результат [СТРОКА] [ПОДСТРОКА] '' )
155:     следующий
156:   конец  
157: возврат
158:
159: функция 'Оставить только числа'
160:   для [ИСХОДНЫЙ_СПИСОК]
161:     строка символы СТРОКА [$ОбъектЦикла]
162:     ВЫВОД (строка фильтр $результат [СТРОКА] '0123456789+-.,' )
163:   следующий
164: возврат
165:
166: функция 'Удалить пустые строки'
167:   для [ИСХОДНЫЙ_СПИСОК]
168:     строка символы СТРОКА [$ОбъектЦикла]
169:     если (строка отсечьПробелы $результат [СТРОКА] ) != ''
170:       ВЫВОД [СТРОКА]
171:     конец
172:   следующий
173: возврат
174:
175: функция 'Удалить обрамляющие пробелы'
176:   для [ИСХОДНЫЙ_СПИСОК]
177:     строка символы СТРОКА [$ОбъектЦикла]
178:     строка отсечьПробелы СТРОКА $
179:     ВЫВОД [СТРОКА]
180:   следующий
181: возврат
182:
183:
184: функция 'Вставить пробел после каждого символа (разреживание)'
185:   память локальный позиция длина_строки РЕЗ
186:   для [ИСХОДНЫЙ_СПИСОК]
187:     строка символы СТРОКА [$ОбъектЦикла]
188:     строка размер длина_строки [СТРОКА]    
189:     присвоить позиция 1 РЕЗ ''
190:     пока [позиция] <= [длина_строки]
191:       строка сцепить РЕЗ $ (строка взять $результат [СТРОКА] [позиция] ) ' '
192:       увеличить позиция
193:     цикл          
194:     ВЫВОД [РЕЗ]
195:   следующий
196: возврат
197:
198: функция 'Нумерация строк'
199:   для [ИСХОДНЫЙ_СПИСОК]
200:     строка символы СТРОКА [$ОбъектЦикла]
201:     ВЫВОД "[$НомерИтерации][СТРОКА]"
202:   следующий
203: возврат
204:
205: функция 'Инверсия строк'
206:   для [ИСХОДНЫЙ_СПИСОК]
207:     строка символы СТРОКА [$ОбъектЦикла]
208:     строка инвертировать СТРОКА $
209:     ВЫВОД [СТРОКА]
210:   следующий
211: возврат
212:
213: функция 'Упорядочить строки'
214:   для (список упорядочить $результат [ИСХОДНЫЙ_СПИСОК] )
215:     строка символы СТРОКА [$ОбъектЦикла]
216:     ВЫВОД [СТРОКА]
217:   следующий
218: возврат
219:
220: функция 'Русский текст на английской клавиатуре'
221:   память локальный позиция длина_строки символ РЕЗ
222:   для [ИСХОДНЫЙ_СПИСОК]
223:     строка символы СТРОКА [$ОбъектЦикла]
224:     строка размер длина_строки [СТРОКА]    
225:     присвоить позиция 1 РЕЗ ''
226:     пока [позиция] <= [длина_строки]
227:       строка взять символ [СТРОКА] [позиция]  
228:       список отобразить символ [символ] [МНОЖ_РУССКИЕ_ВСЕ] [МНОЖ_РУС_ПО_АНГ_ВСЕ] [символ]
229:       строка сцепить РЕЗ $ [символ]
230:       увеличить позиция
231:     цикл          
232:     ВЫВОД [РЕЗ]
233:   следующий
234: возврат
235:
236: функция 'В другой раскладке клавиатуры'
237:   для [ИСХОДНЫЙ_СПИСОК]
238:     строка символы СТРОКА [$ОбъектЦикла]
239:     строка заменитьСимволы СТРОКА $ [СТР_РУС_АНГ_ВСЕ] [СТР_РУС_АНГ_ВСЕ_В_ДРУГОЙ_РАСКЛАДКЕ_КЛАВИАТУРЫ]
240:     ВЫВОД [СТРОКА]
241:   следующий
242: возврат
243:
244: функция 'Преобразование текста в HTML страницу'
245:   ВЫВОД '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">'
246:   ВЫВОД '<html><head>'
247:   ВЫВОД '<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">'
248:   ВЫВОД '<title>Текст</title>'
249:   ВЫВОД '</head><body>'
250:   для [ИСХОДНЫЙ_СПИСОК]
251:     строка символы СТРОКА [$ОбъектЦикла]
252:     присвоить СТРОКА (ЗаменитьСпецсимволы [СТРОКА] )
253:     строка сцепить СТРОКА <br> [СТРОКА]
254:     ВЫВОД [СТРОКА]
255:   следующий
256:   ВЫВОД '</body></html>'
257: возврат
258:
259: функция 'Разбить на строки'
260:   память локальный позиция
261:   ввести переменная ПОДСТРОКА 'Введите символы - разделители:' '.;,;<точка с запятой>'
262:   если [$УспешныйВвод]
263:     если [ПОДСТРОКА] != ''
264:       если [ПОДСТРОКА] == '<точка с запятой>'
265:         присвоить ПОДСТРОКА ';'
266:       конец
267:       для [ИСХОДНЫЙ_СПИСОК]
268:         строка символы СТРОКА [$ОбъектЦикла]
269:         пока [СТРОКА] != ''
270:           строка найтиСимволы позиция [СТРОКА] [ПОДСТРОКА]
271:           если [позиция] > 0
272:             ВЫВОД (строка копировать $результат [СТРОКА] 1 [позиция] )
273:             строка удалить СТРОКА $ 1 [позиция]  
274:           иначе
275:             ВЫВОД [СТРОКА]
276:             присвоить СТРОКА ''
277:           конец
278:         цикл
279:       следующий
280:     конец
281:   конец
282: возврат
283:
284: функция 'Разбить на слова'
285:   для [ИСХОДНЫЙ_СПИСОК]
286:     строка символы СТРОКА [$ОбъектЦикла]
287:     строка кСпискуСлов СТРОКА $
288:     для [СТРОКА]
289:       ВЫВОД [$ОбъектЦикла]
290:     следующий
291:   следующий
292: возврат
293:
294: функция 'Разложить список КОНЦЕПТ'
295:   для [ИСХОДНЫЙ_СПИСОК]
296:     строка символы СТРОКА [$ОбъектЦикла]
297:     для [СТРОКА]
298:       ВЫВОД [$ОбъектЦикла]
299:     следующий
300:   следующий
301: возврат
302:
303: функция 'Собрать в список КОНЦЕПТ'
304:   память локальный список
305:   присвоить список {}
306:   для [ИСХОДНЫЙ_СПИСОК]
307:     строка символы СТРОКА [$ОбъектЦикла]
308:     список сцепить список $ [СТРОКА]
309:   следующий
310:   ВЫВОД [список]
311: возврат
312:
313: ****** ИНИЦИАЛИЗАЦИЯ ******
314:
315: функция ИНИЦИАЛИЗАЦИЯ
316:
317: строка коды ТЗ  ';'
318: строка коды РЕШ '?
319: присвоить СПЕЦ_ВХОД '>;<;";&; ;? СПЕЦ_ВЫХОД "&gt[ТЗ];&lt[ТЗ];&quot[ТЗ];&amp[ТЗ];&nbsp[ТЗ];[РЕШ]"
320:
321: присвоить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК 'строка 1;строка 2;строка 3'
322: список сцепить МЕНЮ_КОМАНД \
323:   '*** Преобразование символов текста ***' \ 
324:   '  К верхнему регистру;  К нижнему регистру' \
325:   '  Строки с большой буквы' \
326:   '  В другой раскладке клавиатуры' '  Русский текст на английской клавиатуре' \
327:   '*** Добавление в начало и конец строк ***' \
328:   '  Добавить префикс;  Добавить суффикс;  Обрамить строку;  Заключить в тэги HTML/XML;  Нумерация строк' \
329:   '  Вставить пробелы слева' \
330:   '*** Действия со строками текста ***' \
331:   '  Вставить пустые строки' \
332:   '  Упорядочить строки' \
333:   '  Сгенерить пустые строки' \
334:   '*** Удаление символов из текста ***' \
335:   '  Удалить символы;  Оставить только числа' \
336:   '  Удалить пустые строки;  Удалить обрамляющие пробелы' \
337:   '*** Другие действия ***' \
338:   '  Вставить пробел после каждого символа (разреживание)' \
339:   '  Инверсия строк' \
340:   '  Преобразование текста в HTML страницу' \
341:   '  Разбить на строки;  Разбить на слова' \
342:   '*** Действия для КОНЦЕПТ ***' \
343:   '  Разложить список КОНЦЕПТ;  Собрать в список КОНЦЕПТ'
344:
345: ****** Определение множеств символов ******
346:
347: присвоить СТР_РУССКИЕ_СТРОЧНЫЕ абвгдежзийклмнопрстуфхцчшщьъыэюя
348: строка прописные СТР_РУССКИЕ_ПРОПИСНЫЕ [СТР_РУССКИЕ_СТРОЧНЫЕ]  
349: присвоить СТР_РУССКИЕ_ВСЕ "[СТР_РУССКИЕ_ПРОПИСНЫЕ][СТР_РУССКИЕ_СТРОЧНЫЕ]"
350: строка кСписку МНОЖ_РУССКИЕ_ВСЕ [СТР_РУССКИЕ_ВСЕ]
351:
352: присвоить СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ abcdefghijklmnopqrstuvwxyz
353: строка прописные СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ [СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ]
354: присвоить СТР_АНГЛИЙСКИЕ_ВСЕ "[СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ][СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ]"
355: строка кСписку МНОЖ_АНГЛИЙСКИЕ_ВСЕ [СТР_АНГЛИЙСКИЕ_ВСЕ]
356:
357: присвоить СТР_ЦИФРЫ 0123456789
358: строка сцепить СТР_ЗНАКИ_ПРЕПИНАНИЯ ".,:?!-'" '"'  
359: присвоить СТР_СКОБКИ '()[]{}<>'  
360:
361: присвоить СТР_РУС_СТРО_В_АНГ f,dult;pbqrkvyjghcnea[wxiom]s'.z
362: присвоить СТР_РУС_ПРОП_В_АНГ F,DULT;PBQRKVYJGHCNEA[WXIOM]S'.Z
363: присвоить СТР_АНГ_СТРО_В_РУС фисвуапршолдьтщзйкыегмцчня
364: присвоить СТР_АНГ_ПРОП_В_РУС ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ
365:
366: присвоить СТР_РУС_АНГ_ВСЕ "[СТР_РУССКИЕ_ВСЕ][СТР_АНГЛИЙСКИЕ_ВСЕ]"
367: присвоить СТР_РУС_АНГ_ВСЕ_В_ДРУГОЙ_РАСКЛАДКЕ_КЛАВИАТУРЫ "[СТР_РУС_ПРОП_В_АНГ][СТР_РУС_СТРО_В_АНГ][СТР_АНГ_ПРОП_В_РУС][СТР_АНГ_СТРО_В_РУС]"
368:
369: присвоить МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ a;b;v;g;d;e;zh;z;i;j;k;l;m;n;o;p;r;s;t;u;f;h;c;ch;sh;shch;;;y;e;ju;ja
370: строка прописные МНОЖ_РУС_ПО_АНГ_ПРОПИСНЫЕ [МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ]
371: список сцепить МНОЖ_РУС_ПО_АНГ_ВСЕ [МНОЖ_РУС_ПО_АНГ_ПРОПИСНЫЕ] [МНОЖ_РУС_ПО_АНГ_СТРОЧНЫЕ]
372:
373: присвоить МНОЖ_ФИЛЬТРОВ "[СТР_РУССКИЕ_СТРОЧНЫЕ];[СТР_АНГЛИЙСКИЕ_СТРОЧНЫЕ];[СТР_ЦИФРЫ];[СТР_РУССКИЕ_ПРОПИСНЫЕ];[СТР_АНГЛИЙСКИЕ_ПРОПИСНЫЕ];[СТР_ЗНАКИ_ПРЕПИНАНИЯ];[СТР_СКОБКИ]"
374:
375: возврат
376:
377: ****** ГЛАВНАЯ ФУНКЦИЯ ******
378:
379: функция ВЫПОЛНЕНИЕ
380:
381: присвоить НОМЕР_ШАГА 0
382: >
383: >Протокол
384: >========
385: пока [$Истина]
386:   ввести текст ИСХОДНЫЙ_СПИСОК 'Введите исходный текст для обработки (ОТМЕНА - для завершения работы программы):' [РЕЗУЛЬТИРУЮЩИЙ_СПИСОК]
387:   если [$УспешныйВвод]
388:     если [НОМЕР_ШАГА] = 0
389:       >
390:       >*** Исходный текст *** 
391:       для [ИСХОДНЫЙ_СПИСОК]
392:         >[$ОбъектЦикла]
393:       следующий
394:     конец
395:     ввести меню1 ДЕЙСТВИЕ 'Выберите действие:' [МЕНЮ_КОМАНД]  
396:     если [$УспешныйВвод]
397:       строка отсечьПробелы ДЕЙСТВИЕ $
398:       если (строка взять $результат [ДЕЙСТВИЕ] 1 ) != '*'
399:         увеличить НОМЕР_ШАГА
400:         >
401:         >*** Шаг [НОМЕР_ШАГА][ДЕЙСТВИЕ] ***
402:         присвоить РЕЗУЛЬТИРУЮЩИЙ_СПИСОК {}
403:         вызвать [ДЕЙСТВИЕ]
404:       конец
405:     конец
406:   иначе
407:     СТОП    
408:   конец
409: цикл
410:
411: возврат